package com.exam.service;

import com.exam.pojo.Paging;
import com.exam.pojo.Question;

import java.util.List;
import java.util.Map;

/**
 * @author 黄星
 * 题目服务接口
 */
public interface QuestionService {

	/**
	 * @param subjectName 类别名称;
	 * @return 返回相应类别的  选择题题目
	 * */
	List<Question> getChoiceQuestionBySubjectName(String subjectName);  //根据类别名称获取选择题

	/**
	 * @param subjectName 类别名称;
	 * @return 返回相应类别的  填空题题目
	 * */
	List<Question> getBlankQuestionBySubjectName(String subjectName);  //根据类别名称获取填空题

	/**
	 * @param subjectName 类别名称
	 * @return 返回相应类别的   判断题题目
	 * */
	List<Question> getJudgeQuestionBySubjectName(String subjectName);    //根据类别名称获取判断题

	/**
	 * @param questions 随机出的问题列表
	 * @return 每题的答案列表  其中是每题的答案列表
	 * */
	List<List<String>> getChoiceQuestionAnswerByRandom(List<Question> questions);  //随机选择题答案

	/**
	 * @param questions 随机出的问题列表
	 * @return 每题题目划分的列表  其中是下划线的前后部分
	 * */
	List<List<String>> getBlankQuestionAnswerBySplit(List<Question> questions);    //将填空题划分成前后部分

	/**
	 * 题目的分页查询
	 * @param map 参数列表
	 * */
	Paging<Question> questionPaging(Map map);

	/**
	 * 通过id来获取题目信息
	 * */
	Question getQuestionById(Integer questionId);

	/**
	 * 删除题目
	 * @param questionId 问题id
	 * @return 返回成功与否
	 * */
	Integer delQuestionById(Integer questionId);

	/**
	 * 更新题目
	 * @param map 封装了各个参数的键值对
	 * */
	Integer updQuestion(Map map);

	/**
	 * 添加题目
	 * @param map 封装了各个参数的键值对
	 * */
	Integer addQuestion(Map map);

	/**
	 * 恢复题目
	 * @param questionId 问题的ID
	 * @return 成功与否
	 * */
	Integer recoveryQuestion(Integer questionId);
}
